package api

type CardHolderReq struct {
	FirstName      string `json:"firstName"`
	MiddleName     string `json:"middleName"`
	LastName       string `json:"lastName"`
	Email          string `json:"email"`
	MobilePrefix   string `json:"mobilePrefix"`
	Mobile         string `json:"mobile"`
	BirthDate      string `json:"birthDate"`
	CountryCode    string `json:"countryCode"`
	BillingState   string `json:"billingState"`
	BillingCity    string `json:"billingCity"`
	BillingAddress string `json:"billingAddress"`
	BillingZipCode string `json:"billingZipCode"`
	Remark         string `json:"remark"`
}

type CardHolderRes struct {
	CardUserId string `json:"cardUserId"`
}

type DeleteCardHolderReq struct {
	CardUserId string `json:"cardUserId"`
}

type DeleteCardHolderRes struct {
	CardUserId string `json:"cardUserId"`
}

type CardApplyVoReq struct {
	LocalCurrency   string `json:"localCurrency"`
	AuthLimitAmount string `json:"authLimitAmount"`
	CardUserId      string `json:"cardUserId"`
	Email           string `json:"email"`
	CardAlias       string `json:"card_alias"`
	CardHead        string `json:"cardHead"`
	CardArea        string `json:"cardArea"`
	BusinessScene   string `json:"businessScene"`
}

type CardApplyVoRes struct {
	CardId         string `json:"cardId"`
	LocalCurrency  string `json:"localCurrency"`
	CardNo         string `json:"cardNo"`
	CardVerifyNo   string `json:"cardVerifyNo"`
	CardExpiryDate string `json:"cardExpiryDate"`
}

type CardApplyReq struct {
	UserReqNo           string `json:"userReqNo"`
	CardAlias           string `json:"card_alias"`
	LocalCurrency       string `json:"localCurrency"`
	StartDate           string `json:"startDate"`
	EndDate             string `json:"endDate"`
	AuthLimitAmount     string `json:"authLimitAmount"`
	EnableCurrencyCheck int    `json:"enableCurrencyCheck"` // 1开启校验 0 不校验。如果开启,交易币种需同开卡币种【channelType=1时必传】
	BinRangeId          string `json:"binRangeId"`          // 常规卡(默认)：222929
	EnableMultiUse      string `json:"enableMultiUse"`      // 1多次卡0单次卡
	ChannelType         string `json:"channelType"`
	CardUserId          string `json:"cardUserId"`
}

type CloseCardReq struct {
	CardId    string `json:"cardId"`
	UserReqNo string `json:"userReqNo"`
}

type CloseCardRes struct {
	OrderId string `json:"orderId"`
}

type EditCardStatusReq struct {
	CardId    string `json:"cardId"`
	UserReqNo string `json:"userReqNo"`
	Status    string `json:"status"`
}
type EditCardStatusRes struct {
	CardId string `json:"cardId"`
}

type CardRechargeReq struct {
	CardId          string `json:"cardId"`
	UserReqNo       string `json:"userReqNo"`
	AuthLimitAmount string `json:"authLimitAmount"`
	ChannelType     string `json:"channelType"`
}

type CardRechargeRes struct {
	OrderId string `json:"orderId"`
}

type CardRefundReq struct {
	CardId       string `json:"cardId"`
	UserReqNo    string `json:"userReqNo"`
	RefundAmount string `json:"refundAmount"`
	ChannelType  string `json:"channelType"`
	FlagBool     bool   `json:"flag_bool"`
}

type CardRefundRes struct {
	OrderId string `json:"orderId"`
}

type GetCardHolderInfoReq struct {
	CardUserId string `json:"cardUserId"`
}

type GetCardHolderRes struct {
	CardUserId         string               `json:"cardUserId"`
	FirstName          string               `json:"firstName"`
	MiddleName         string               `json:"middleName"`
	LastName           string               `json:"lastName"`
	Email              string               `json:"email"`
	MobilePrefix       string               `json:"mobilePrefix"`
	Mobile             string               `json:"mobile"`
	BirthDate          string               `json:"birthDate"`
	CountryCode        string               `json:"countryCode"`
	BillingState       string               `json:"billingState"`
	BillingCity        string               `json:"billingCity"`
	BillingAddress     string               `json:"billingAddress"`
	BillingZipCode     string               `json:"billingZipCode"`
	CreateAt           string               `json:"createAt"`
	Status             int                  `json:"status"`
	Remark             string               `json:"remark"`
	HolderCardBinsInfo []HolderCardBinsInfo `json:"holderCardBins"`
}

type HolderCardBinsInfo struct {
	CardBin          string `json:"cardBin"`
	HolderStatus     int    `json:"holderStatus"`
	HolderStatusDesc string `json:"HolderStatusDesc"`
}

type CardInfoRes struct {
	UserNo              string          `json:"userNo"`
	CardNo              string          `json:"cardNo"`
	CardVerifyNo        string          `json:"cardVerifyNo"`
	CardAlias           string          `json:"cardAlias"`
	CardLabel           string          `json:"cardLabel"`
	CardExpiryDate      string          `json:"cardExpiryDate"`
	LocalCurrency       string          `json:"localCurrency"`
	StartActiveDate     string          `json:"startActiveDate"`
	EndCloseDate        string          `json:"endCloseDate"`
	CreditLimitAmt      string          `json:"creditLimitAmt"`
	MinAuthAmt          string          `json:"minAuthAmt"`
	MaxAuthAmt          string          `json:"maxAuthAmt"`
	BalanceAmt          string          `json:"balanceAmt"`
	UsedAuthAmt         string          `json:"usedAuthAmt"`
	EnableMultiUse      string          `json:"enableMultiUse"`
	EnableCurrencyCheck string          `json:"enableCurrencyCheck"`
	CardClosedAmt       string          `json:"cardClosedAmt"`
	CardStatus          string          `json:"cardStatus"`
	CardStatusDesc      string          `json:"cardStatusDesc"`
	CreateTime          string          `json:"createTime"`
	CardUserInfo        CardUserInfo    `json:"cardUserInfo"`
	BillAddressInfo     BillAddressInfo `json:"billAddressInfo"`
}

type CardUserInfo struct {
	FirstName string `json:"firstName"`
	LastName  string `json:"lastName"`
	Email     string `json:"email"`
	Mobile    string `json:"mobile"`
	BirthDate string `json:"birthDate"`
}

type BillAddressInfo struct {
	Country        string `json:"country"`
	CountryCode    string `json:"countryCode"`
	BillingState   string `json:"billingState"`
	BillingCity    string `json:"billingCity"`
	BillingAddress string `json:"billingAddress"`
	BillingZipCode string `json:"billingZipCode"`
}

type GetCardInfoReq struct {
	CardId string `json:"cardId"`
}

type CardInfoVoRes struct {
	CardNo          string          `json:"cardNo"`
	CardVerifyNo    string          `json:"cardVerifyNo"`
	CardExpiryDate  string          `json:"cardExpiryDate"`
	LocalCurrency   string          `json:"localCurrency"`
	StartActiveDate string          `json:"startActiveDate"`
	EndCloseDate    string          `json:"endCloseDate"`
	CreditLimitAmt  string          `json:"creditLimitAmt"`
	BalanceAmt      string          `json:"balanceAmt"`
	UsedAuthAmt     string          `json:"usedAuthAmt"`
	CardClosedAmt   string          `json:"cardClosedAmt"`
	CardStatus      string          `json:"cardStatus"`
	CardStatusDesc  string          `json:"cardStatusDesc"`
	CreateTime      string          `json:"createTime"`
	CardUserInfo    CardUserInfo    `json:"cardUserInfo"`
	BillAddressInfo BillAddressInfo `json:"billAddressInfo"`
}

type AccountBalanceRes struct {
	Balance string `json:"balance"`
}
